package cn.threecubic.sort;

import java.util.Arrays;

/**
 * 选择排序
 *
 * @author Terminator
 * @date 2021/10/15 9:23
 */
public class SelectionSort {
    public static void main(String[] args) {
        int[] data = {14, 33, 27, 10, 35, 19, 42, 44};
        System.out.println("选择排序,排序前：" + Arrays.toString(data));
        selectionSort(data);
        System.out.println("选择排序,排序后：" + Arrays.toString(data));
    }

    /**
     * 选择排序
     *
     * @param arr
     */
    public static void selectionSort(int[] arr) {
        int length = arr.length;
        // 从第一个元素开始遍历，直到倒数第二个元素
        for (int i = 0; i < length - 1; i++) {
            // 假设当前i值为最小(或最大)的下标
            int minIndex = i;
            // 找到值最小(或最大)的真正下标
            for (int j = i + 1; j < length; j++) {
                if (arr[j] < arr[minIndex]) {
                    minIndex = j;
                }
            }
            // 假设下标元素和真正下标元素互换位置
            if (minIndex != i) {
                int temp = arr[i];
                arr[i] = arr[minIndex];
                arr[minIndex] = temp;
            }
        }
    }

}
